/*  
 * File name : tool.c
 * Function  : toolkit
 * Date      : 2024-04-25  
 * Version   : 0.1.0  
 */
/************************************************************************************
***************************************INCLUDE***************************************
*************************************************************************************/
#include "tool.h"
/************************************************************************************
***************************************EXTERN****************************************
*************************************************************************************/
/*
* func        : data handle
* return      : err code
* input       : <str> (dest string) <start_pos> (Start subscript) <size> (offset)
* output      ：NULL
* author      date     modify
--------------------------------
 xintianyu  2024-4-10  create
 xintianyu  2024-4-25  V-0.1.0
*/
int extract_digit_number(const char *str, int start_pos, const int size)
{
    /*有些版本的编译器规定数组下标必须为const类型*/
    /*TODO 改为断言*/
    if (NULL == str || strlen(str) < start_pos + size)
    {  
        printf("extract_digit_number ERROR\n");
        return -1;  // 字符串为空、长度不足或起始位置超出范围  
    }
    char chars[(size+1)];
    for (int i = 0; i < size; i++) 
    {  
        chars[i] = str[start_pos + i];  
    }  
    chars[size] = '\0';  // 确保字符串正确结束  
  
    int num = 0;  
    for (int i = 0; i < size; i++) {  
        if (!isdigit(chars[i])) {
            printf("char = %d %c\n", chars[i], chars[i]);
            printf("char not is num\n");
            return -1;  // 包含非数字字符  
        }  
        num = num * 10 + (chars[i] - '0');  
    }  
  
    return num;  // 返回转换后的整型数  
}